#include "lua_native_binding.hpp"
#include "natives.hpp"

namespace lua::native
{
	static void LUA_NATIVE_REPLAY_REGISTER_EFFECT_FOR_REPLAY_EDITOR(sol::stack_object p0, bool p1)
	{
		REPLAY::REGISTER_EFFECT_FOR_REPLAY_EDITOR(p0.is<const char*>() ? p0.as<const char*>() : nullptr, p1);
	}

	static bool LUA_NATIVE_REPLAY_REPLAY_SYSTEM_HAS_REQUESTED_A_SCRIPT_CLEANUP()
	{
		auto retval = (bool)REPLAY::REPLAY_SYSTEM_HAS_REQUESTED_A_SCRIPT_CLEANUP();
		return retval;
	}

	static void LUA_NATIVE_REPLAY_SET_SCRIPTS_HAVE_CLEANED_UP_FOR_REPLAY_SYSTEM()
	{
		REPLAY::SET_SCRIPTS_HAVE_CLEANED_UP_FOR_REPLAY_SYSTEM();
	}

	static void LUA_NATIVE_REPLAY_SET_REPLAY_SYSTEM_PAUSED_FOR_SAVE(bool p0)
	{
		REPLAY::SET_REPLAY_SYSTEM_PAUSED_FOR_SAVE(p0);
	}

	static void LUA_NATIVE_REPLAY_REPLAY_CONTROL_SHUTDOWN()
	{
		REPLAY::REPLAY_CONTROL_SHUTDOWN();
	}

	static void LUA_NATIVE_REPLAY_ACTIVATE_ROCKSTAR_EDITOR(int p0)
	{
		REPLAY::ACTIVATE_ROCKSTAR_EDITOR(p0);
	}

	void init_native_binding_REPLAY(sol::state& L)
	{
		auto REPLAY = L["REPLAY"].get_or_create<sol::table>();
		REPLAY.set_function("REGISTER_EFFECT_FOR_REPLAY_EDITOR", LUA_NATIVE_REPLAY_REGISTER_EFFECT_FOR_REPLAY_EDITOR);
		REPLAY.set_function("REPLAY_SYSTEM_HAS_REQUESTED_A_SCRIPT_CLEANUP", LUA_NATIVE_REPLAY_REPLAY_SYSTEM_HAS_REQUESTED_A_SCRIPT_CLEANUP);
		REPLAY.set_function("SET_SCRIPTS_HAVE_CLEANED_UP_FOR_REPLAY_SYSTEM", LUA_NATIVE_REPLAY_SET_SCRIPTS_HAVE_CLEANED_UP_FOR_REPLAY_SYSTEM);
		REPLAY.set_function("SET_REPLAY_SYSTEM_PAUSED_FOR_SAVE", LUA_NATIVE_REPLAY_SET_REPLAY_SYSTEM_PAUSED_FOR_SAVE);
		REPLAY.set_function("REPLAY_CONTROL_SHUTDOWN", LUA_NATIVE_REPLAY_REPLAY_CONTROL_SHUTDOWN);
		REPLAY.set_function("ACTIVATE_ROCKSTAR_EDITOR", LUA_NATIVE_REPLAY_ACTIVATE_ROCKSTAR_EDITOR);
	}
}
